package tv.acgn.advertisement.index.dao;

import java.util.List;
import java.util.Optional;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
import tv.acgn.advertisement.index.po.AdPlanPO;

/**
 * @author junG
 * @program advertisement-ad-pub-dao
 * @description 推广计划持久化操作类
 * @date 2019-05-01 18:29
 **/
@Repository
public interface AdPlanDao extends JpaRepository<AdPlanPO, String> {

    /**
     * 根据用户身份码和推广计划名 查询是否存在推广计划
     *
     * @param userId   [1]
     * @param planName [2]
     *
     * @return {@link Optional<AdPlanPO>}
     *
     * @author junG
     * @description 根据用户身份码和推广计划名 查询是否存在推广计划
     * @date 23:53 2019/5/1
     */
    Optional<AdPlanPO> findByUserIdAndPlanName(String userId, String planName);

    /**
     * 根据用户身份码和计划识别码查询关联的所有计划
     *
     * @param planId [1]
     * @param userId [2]
     *
     * @return {@link Optional<List<AdPlanPO>>}
     *
     * @author junG
     * @description 根据用户身份码和计划识别码查询关联的所有计划
     * @date 0:21 2019/5/2
     */
    Optional<List<AdPlanPO>> findAllByPlanIdInAndUserId(List<String> planId, String userId);

    /**
     * <h2>根据状态查找此状态的全部推广计划数据</h2>
     *
     * @param planStatus [1] 推广计划状态
     *
     * @return {@link Optional<List<AdPlanPO>>}
     *
     * @author junG
     * @description 根据状态查找此状态的全部推广计划数据
     * @date 23:50 2019/9/11
     */
    Optional<List<AdPlanPO>> findAllByPlanStatus(Integer planStatus);

}
